package com.specter.dev.code.execute;

import java.util.List;

import com.specter.dev.code.builder.GenConfiguration.ModuleInput;

import lombok.Data;

/**
 * Note:通过配置获取实体对象
 * 
 * @author Liang.Wang
 * @version Mar 23, 2017
 */
public interface ModuleInputExe {

	/**
	 * 对一个&lt;input/&gt;标签解析成实体列表
	 * 
	 * @param input 配置信息
	 * @return 将要转换的实体列表
	 */
	public List<?> input(ModuleInput input);

	/** ====== 数据源对应的 Java Bean ====== **/
	@Data
	public class Entity {

		private String className;// java类的全名
		private String entityName; // java类的简名

		private String tableName; // 表名
		private String tableSchema; // 库名
		private String tableRemark;// 数据库表注释

		private EntityProperty id;// id主键属性
		private List<EntityProperty> properties;// 属性列表(不含ID字段)
	}

	@Data
	public class EntityProperty {
		private String name; // 属性名 如: citizenId
		private String clazz; // 属性类名 如: java.lang.String

		private String column; // 表字段名 如: CITIZEN_ID
		private String type; // 表字段类型 如: VARCHAR
		private String remark; // 表字段注释 如: 身份证号
	}

}
